var globalRodadas = new Array();
var globalPartidas = new Array();
var globalClubes = new Array();
var globalJogadores = new Array();
var globalGols = new Array();
var globalCartoes = new Array();
var globalSubstituicoes = new Array();
var globalCurrentDate = '';

function onLoad(){
    var communicator = new Communicator();
    communicator.resetParameters();
    
    var parameters = new Array();
    parameters['request'] = 'jogadores,clubes,data,rodadas';
    
    communicator.addParametersList(parameters);
    communicator.sendRequest(firstRequestHandler);
}

function firstRequestHandler(response){
    var responseObj = eval(response);
    
    receiveJogadoresHandler(responseObj[0]);
    receiveClubesHandler(responseObj[1]);
    globalCurrentDate = responseObj[2];
    receiveRodadasHandler(responseObj[3]);
}

function receiveClubesHandler(clubesResponseObj){
    var clubesResponseObjLen = clubesResponseObj.length;

    for(var i = 0; i < clubesResponseObjLen; i++){        
        var clube = new Clube(clubesResponseObj[i][0]);
        clube.assignProperties(clubesResponseObj[i][1], clubesResponseObj[i][2], clubesResponseObj[i][3], clubesResponseObj[i][4]);
        globalClubes[clube.getKey()] = clube;
    }
}

function receiveRodadasHandler(rodadasResponseObj){
    var rodadasResponseObjLen = rodadasResponseObj.length;
    
    var fragment = document.createDocumentFragment();
    var currentRodada = 0;
    var rodada = null;
    
    for(var i = 0; i < rodadasResponseObjLen; i++){
        var rodadaId = rodadasResponseObj[i][0];
        
        if(currentRodada != rodadaId){
            currentRodada = rodadaId;
            rodada = new Rodada(rodadaId);
            globalRodadas[rodada.getKey()] = rodada;
            fragment.appendChild(rodada.createItemList());
        }

        var partida = new Partida(rodadasResponseObj[i][1], rodadasResponseObj[i][2], rodadasResponseObj[i][3],
        rodadasResponseObj[i][4], rodadasResponseObj[i][5], rodadasResponseObj[i][6], rodadasResponseObj[i][7],
        rodadasResponseObj[i][8], rodadasResponseObj[i][9], rodadasResponseObj[i][10], rodadasResponseObj[i][11]);
        globalPartidas[partida.getKey()] = partida;
        
        rodada.addPartida(partida);
    }
    
    document.getElementById('rodadasList').appendChild(fragment);
}

var globalGolsByPartida = new Array();

function receiveGolsHandler(golsResponseObj){
    var golsResponseObjLen = golsResponseObj.length;
    
    for(var i = 0; i < golsResponseObjLen; i++){
        
        var gol = new Gol(golsResponseObj[i][0]);
        gol.assignProperties(golsResponseObj[i][1], golsResponseObj[i][2], golsResponseObj[i][3], golsResponseObj[i][4], golsResponseObj[i][5]);
        
        gol.addToRelated(globalGolsByPartida, 'partida_'+gol.id_partida);
        
        globalGols[gol.getKey()] = gol;
    }    
}

function receiveJogadoresHandler(jogadoresResponseObj){
    var jogadoresResponseObjLen = jogadoresResponseObj.length;
    
    for(var i = 0; i < jogadoresResponseObjLen; i++){
        
        var jogador = new Jogador(jogadoresResponseObj[i][0]);
        jogador.assignProperties(jogadoresResponseObj[i][1], jogadoresResponseObj[i][2], jogadoresResponseObj[i][3], jogadoresResponseObj[i][4], jogadoresResponseObj[i][5]);
        
        globalJogadores[jogador.getKey()] = jogador;
    }    
}

var globalCartoesByPartida = new Array();

function receiveCartoesHandler(cartoesResponseObj){
    var golsResponseObjLen = cartoesResponseObj.length;
    
    for(var i = 0; i < golsResponseObjLen; i++){
        
        var cartao = new Cartao(cartoesResponseObj[i][0]);
        cartao.assignProperties(cartoesResponseObj[i][1], cartoesResponseObj[i][2], cartoesResponseObj[i][3], cartoesResponseObj[i][4], cartoesResponseObj[i][5]);
        
        cartao.addToRelated(globalCartoesByPartida, 'partida_'+cartao.id_partida);
        
        globalCartoes[cartao.getKey()] = cartao;
    }    
}

var globalSubstituicoesByPartida = new Array();

function receiveSubstituicoesHandler(substituicoesResponseObj){
    var golsResponseObjLen = substituicoesResponseObj.length;
    
    for(var i = 0; i < golsResponseObjLen; i++){
        
        var substituicao = new Substituicao(substituicoesResponseObj[i][0]);
        substituicao.assignProperties(substituicoesResponseObj[i][1], substituicoesResponseObj[i][2], substituicoesResponseObj[i][3], substituicoesResponseObj[i][4], substituicoesResponseObj[i][5]);
        
        substituicao.addToRelated(globalSubstituicoesByPartida, 'partida_'+substituicao.id_partida);
        globalSubstituicoes[substituicao.getKey()] = substituicao;
    }    
}

function convertDateTimeCorrectFormat(datetime){
    var datetimeParts = datetime.split(' ');
    var date = datetimeParts[0];
    var time = datetimeParts[1];
    
    var dateParts = date.split('-');
    
    return {date: dateParts[2]+'/'+dateParts[1]+'/'+dateParts[0] , time: time}
}


function clearElement(element){
    if(isString(element)) element = document.getElementById(element);
    
    element.innerHTML = '';
}

function isString(value){
    return typeof(value) == 'string';
}

function preloaderAnimation(){
    var shadowedBackground = document.getElementById('shadowed_background');
    var preloader = document.getElementById('preloader');
    
    if(shadowedBackground.className == 'invisible'){
        //troca de invisible para nada e depois põe visible
        shadowedBackground.className = '';
        setTimeout(function(){
            shadowedBackground.className = 'visible';
            preloader.style.left = (shadowedBackground.offsetWidth / 2) - (preloader.offsetWidth / 2);
        }, 50);
    }else{
        shadowedBackground.className = 'invisible';
    }
}

var globalTabela = null;

function requestTableData(){
    var tabela = new Tabela();
    tabela.requestTabelaData();
    
    globalTabela = tabela;
}

function convertDatetimeFromDatabaseFormat(datetime){
    if(!isString(datetime) || datetime == null) return null;
    else{
        var datetimeParts = datetime.split(' ');
        var date = datetimeParts[0];
        var time = datetimeParts[1];
        
        var day, month, year;
        
        date = date.split('-');

        day = date[2];
        month = date[1];
        year = date[0];

        time = time.split(':');
        
        var hour = time[0];
        var minute = time[1];
        
        return day+'/'+month+'/'+year+' '+hour+':'+minute;
    }
}

function dateHasPassed(datetime){
    var day, month, year;
    var currentDay, currentMonth, currentYear;
    
    datetime = datetime.split('/');

    day = datetime[0];
    month = datetime[1];
    year = datetime[2];
    
    alert(globalCurrentDate)
    var currentDate = globalCurrentDate.split(' ')[0].split('/');
    
    currentDay = currentDate[0];
    currentMonth = currentDate[1];
    currentYear = currentDate[2];
    
    if(currentYear > year){
        return true;
    }else if(currentYear == year){
        if(currentMonth > month){
            return true;
        }
        else if(currentMonth == month){
            if(currentDay > day){
                //IMPLEMENTAR HORAS DEPOIS
                return true;
            }else return false;
        }else return false;
    }else return false;
}